package com.kgc.mapper;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.SelectKey;

import com.kgc.pojo.Student;

/**
 * <一句话功能简述> <功能详细描述>
 * 
 * @author 姓名 工号
 * @version [版本号, 2019年7月17日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */

public interface StudentMapper
{
    /**
     * <主键 通过UUID   并返回 主键>
     *  statement="select max(empNo)+1 as myNo from emp":表示定义的子查询语句
         * before=true：表示在之前执行，boolea类型的,所以为true
         * keyColumn="myNo":表示查询所返回的类名
         * resultType=int.class：表示返回值得类型
         * keyProperty="empNo" ：表示将该查询的属性设置到某个列中，此处设置到empNo中
   
     * <功能详细描述>
     * 
     * xml配置如下：
     * <insert  id="insertUser" parameterType="cn.itcast.mybatis.po.User">
        <selectKey resultType="java.lang.String" order="BEFORE" 
        keyProperty="id">
        select uuid()
        </selectKey>
        insert into user(id,username,birthday,sex,address) 
                 values(#{id},#{username},#{birthday},#{sex},#{address})
        </insert>
     * @param stu
     * @return
     * @see [类、类#方法、类#成员]
     */
    @SelectKey(keyProperty = "stuId", resultType = String.class, before = true, statement = "select uuid()")
    @Insert({"insert into t_student(id,name,sex)  values(#{stuId},#{name},#{sex})"})
    @Options(useGeneratedKeys=true,keyProperty="id")
    public int saveStudent(Student stu);
    
}
